package com.ruoyi.system.api.mapper;

import com.ruoyi.system.api.domain.MyPlanCount;
import com.ruoyi.system.api.domain.ReportInfo;
import com.ruoyi.system.api.domain.ServiceNotice;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 服务派单主 (数据来源于CC端主动调用)Mapper接口
 * 
 * @author shihx
 * @date 2020-03-02
 */
public interface ServiceNoticeMapper 
{
    /**
     * 查询服务派单主 (数据来源于CC端主动调用)
     * 
     * @param id 服务派单主 (数据来源于CC端主动调用)ID
     * @return 服务派单主 (数据来源于CC端主动调用)
     */
    public ServiceNotice selectServiceNoticeById(Long id);

    /**
     * 查询服务派单主 (数据来源于CC端主动调用)列表
     * 
     * @param serviceNotice 服务派单主 (数据来源于CC端主动调用)
     * @return 服务派单主 (数据来源于CC端主动调用)集合
     */
    public List<ServiceNotice> selectServiceNoticeList(ServiceNotice serviceNotice);

    /**
     * 新增服务派单主 (数据来源于CC端主动调用)
     * 
     * @param serviceNotice 服务派单主 (数据来源于CC端主动调用)
     * @return 结果
     */
    public int insertServiceNotice(ServiceNotice serviceNotice);

    /**
     * 修改服务派单主 (数据来源于CC端主动调用)
     * 
     * @param serviceNotice 服务派单主 (数据来源于CC端主动调用)
     * @return 结果
     */
    public int updateServiceNotice(ServiceNotice serviceNotice);

    /**
     * 删除服务派单主 (数据来源于CC端主动调用)
     * 
     * @param id 服务派单主 (数据来源于CC端主动调用)ID
     * @return 结果
     */
    public int deleteServiceNoticeById(Long id);

    /**
     * 批量删除服务派单主 (数据来源于CC端主动调用)
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteServiceNoticeByIds(String[] ids);

    /**
     * 获取工程师下待处理、进行中服务单的数量接口
     * @methodName: getMyPlanCount
     * @description: TODO
     * @param EnginnerId
     * @return: com.ruoyi.system.api.domain.MyPlanCount
     * @author: shihx
     * @date: 2020/3/2 16:04
    **/
    public MyPlanCount getMyPlanCount(
            @Param(value="EnginnerId") String EnginnerId,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType
    );
    public MyPlanCount getMyTeamCount(
            @Param(value="teamleaderId") String teamleaderId,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType
    );
    /**
     * 获取工程师下待接受、进行中服务单列表的接口
     * @methodName: getMyServiceNotice
     * @description: TODO
     * @param EnginnerId
     * @param state
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: shihx
     * @date: 2020/3/3 13:24
    **/
    public List<ServiceNotice> getMyServiceNotice(
            @Param(value="EnginnerId") String EnginnerId,
            @Param(value="state") String state,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType
    );
    public int getMyServiceNoticeCount(
            @Param(value="EnginnerId") String EnginnerId,
            @Param(value="state") String state,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType
    );
    /**
     * 获取工程师下待接受、进行中服务单详情的接口
     * @methodName: getMyServiceNoticeDetail
     * @description: TODO
     * @param ServiceNoticeId
     * @param EnginnerId
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: shihx
     * @date: 2020/3/3 13:25
    **/
    public List<ServiceNotice> getMyServiceNoticeDetail(
            @Param(value="ServiceNoticeId") String ServiceNoticeId, @Param(value="EnginnerId") String EnginnerId
    );

    /**
     * TL设置仪器指定FSE接口
     * @methodName: updateServiceNoticeAccoutfse
     * @description: TODO
     * @param serviceNotice
     * @return: int
     * @author: shihx
     * @date: 2020/3/6 16:52
    **/
    public int updateServiceNoticeAccoutfse(ServiceNotice serviceNotice);

    /**
     * 获取工程师下各状态服务单列表的接口
     * @methodName: getServiceNoticeList
     * @description: TODO
     * @param EnginnerId
     * @param state
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: sjy
     * @date: 2020年3月9日14:35:46
     **/
    public List<ServiceNotice> getServiceNoticeList(
            @Param(value="EnginnerId") String EnginnerId,
            @Param(value="state") String state,
            @Param(value="ServiceNoticeId") String ServiceNoticeId,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType,
            @Param(value="instrumentSerialNumber") String instrumentSerialNumber,
            @Param(value="startTime") String startTime,
            @Param(value="endTime") String endTime,
            @Param(value="serviceNo") String serviceNo


    );
    /**
     * 获取app不可操作服务单列表的接口
     * @methodName: getServiceNoticeList
     * @description: TODO
     * @param EnginnerId
     * @param state
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: sjy
     * @date: 2020年3月9日14:35:46
     **/
    public List<ServiceNotice> getccServiceNoticeList(
            @Param(value="EnginnerId") String EnginnerId,
            @Param(value="state") String state,
            @Param(value="ServiceNoticeId") String ServiceNoticeId,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType,
            @Param(value="instrumentSerialNumber") String instrumentSerialNumber,
            @Param(value="startTime") String startTime,
            @Param(value="endTime") String endTime,
            @Param(value="serviceNo") String serviceNo


    );
    /**
     * 获取工程师下已关闭服务单列表的接口（最近一个月）
     * @methodName: getServiceNoticeList
     * @description: TODO
     * @param EnginnerId
     * @param AppState
     * @param serviceNo
     * @param startDate
     * @param endDate
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: sjy
     * @date: 2020年3月9日14:35:46
     **/
    public List<ServiceNotice> getClosedNoticeList(
            @Param(value="EnginnerId") String EnginnerId,
            @Param(value="AppState") Long AppState,
            @Param(value="serviceNo") String serviceNo,
            @Param(value="startDate") String startDate,
            @Param(value="endDate") String endDate,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType,
            @Param(value="instrumentSerialNumber") String instrumentSerialNumber
    );

    /**
     * 获取TL下待指派和服务中的服务通知接口
     * @methodName: getTeamServiceNotice
     * @description: TODO
     * @param serviceNotice
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: sjy
     * @date: 2020年3月9日14:41:52
     **/
    public List<ServiceNotice> getTeamServiceNotice(ServiceNotice serviceNotice);

    /**
     * 获取FSE下维护报告列表（未关闭的服务）
     * @param serviceNotice
     * @return
     */
    public List<ServiceNotice> getFseReportNotice(ServiceNotice serviceNotice);
    public List<ServiceNotice> getFseReportNoticeSubmit(ServiceNotice serviceNotice);


    public List<ServiceNotice> getFseReportNoticeSubmitByErrorOrHot(ServiceNotice serviceNotice);

    /**
     *  查询报告列表
     *
     * @param serviceNotice
     * @return int
     * @author sjy
     * @date 2020年3月9日19:39:26
     */
    public List<ServiceNotice> getListByEnginnerId(ServiceNotice serviceNotice);

    /**
     * 根据服务号更新 转派其它TL使用
     * @methodName: updateServiceNoticeByServiceNo
     * @description: TODO
     * @param serviceNotice
     * @return: int
     * @author: shihx
     * @date: 2020/3/20 9:10
    **/
    public int updateServiceNoticeByServiceNo(ServiceNotice serviceNotice);

    /**
     *  根据服务派单号查询信息
     *
     * @param serviceNo
     * @return com.ruoyi.system.api.domain.ServiceNotice
     * @author yzg
     * @date 2020/4/3 2:14 下午
     */
    ServiceNotice selectServiceNoticeByServiceNo(@Param("serviceNo") String serviceNo);

    /**
     *  查询CC端服务通知（处理） 未关闭的
     *
     * @param enginnerId
     * @return java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author yzg
     * @date 2020/4/15 2:11 下午
     */
    List<ServiceNotice> selectCCServiceNoticeList(@Param("enginnerId") Long enginnerId);

    /**
     * 待指派有搜索条件的查询
     * @methodName: getAssignServiceNotice
     * @description: TODO
     * @param enginnerId
     * @param state
     * @param customerName
     * @param serviceType
     * @param instrumentSerialNumber
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: shihx
     * @date: 2020-04-16 13:41
    **/
    public List<ServiceNotice> getAssignServiceNotice(
            @Param(value="enginnerId") String enginnerId,
            @Param(value="state") String state,
            @Param(value="customerName") String customerName,
            @Param(value="serviceType") String serviceType,
            @Param(value="instrumentSerialNumber") String instrumentSerialNumber
    );

    /**
     * 2.2同步接口更新
     * @methodName: updateSyncServiceNotice
     * @description: TODO
     * @param serviceNotice
     * @return: int
     * @author: shihx
     * @date: 2020-04-21 9:31
    **/
    public int updateSyncServiceNotice(ServiceNotice serviceNotice);

    /**
     * 查询团队服务通知接口
     * @methodName: getTeamServiceNotices
     * @description: TODO
     * @param serviceNotice
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: shihx
     * @date: 2020-04-23 11:09
    **/
    public List<ServiceNotice> getTeamServiceNotices(ServiceNotice serviceNotice);

    public List<ServiceNotice> getTeamServiceNoticesBytl(ServiceNotice serviceNotice);

    public Integer getTeamServiceNoticesCount(ServiceNotice serviceNotice);


    /**
     * 查询没有日志服务的报告
     * @methodName: getTeamServiceNotices
     * @description: TODO
     * @param
     * @return: java.util.List<com.ruoyi.system.api.domain.ServiceNotice>
     * @author: shihx
     * @date: 2020-04-23 11:08
     **/
    public List<Map<String, Object>> selectServiceNoticeListByNotLog(Map<String, Object> serviceNotice);

    public List<ServiceNotice> getFseReportNoticeFourType(ServiceNotice serviceNotice);

    public List<ServiceNotice> getFseReportNoticeFourTypeAll(ServiceNotice serviceNotice);

    public List<ServiceNotice> getAllCustomerSignListModify(Map map);

}
